package com.atguigu.gmall.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Description:
 * @author: tiancy
 * @create: 2021/11/22
 */

@Controller
public class FirstController {

    // http://localhost:8080/first?username=zs&password=123
    /*
        TODO 需要掌握的知识点 :
         1、在controller层上使用注解@Controller含义
         2、RequestMapping("/first")用法以及含义
         3、ResponseBody作用
         4、@Controller 和 RestController区别
         5、前端传过来的参数和当前命中标记的方法参数绑定 @RequestParam注解的使用.
     */
    /*
        Controller : 标记当前类的创建以及关系维护交由spring容器进行管理,如果类中的方法返回是String,那么会被认为是进行页面跳转,而不是直接返回字符串.
        RestController : 拦截请求,将请求交给标记的方法进行处理 .
        如果说我当前的Controller中全部都不需要进行页面跳转,而是直接将结果进行返回,但是还不想在每个方法上加 @ResponseBody . 就可以直接将两个注解进行整合使用.
        RestController = ResponseBody + Controller

        如果前端传过来的参数和当前被标记的方法中定义的形参不一致 . 如 : 前端直接传过来的参数为 user,而方法中形参为username,他们不一致,则需要进行参数帮绑定.
        @RequestParam 接受我们前端传过来的参数并进行处理.如果只有一个属性,则可以省略value = .
        如果前端传过来的参数中,没有haha这个参数,则会默认给参数赋值. @RequestParam(value = "haha", defaultValue = "6666"
     */
    @RequestMapping("/first")
    @ResponseBody // 不是页面跳转,而是直接将return的部分作为字符串直接返回.
    public String first(@RequestParam("heihie") String username, @RequestParam(value = "haha", defaultValue = "6666") String password) {
        System.out.println(username + "::::::" + password);
        return "success";
    }
}
